
| 序号 | 数据 | 数据来源 |
|---|---|---|
| 1 | 青少年压力和心理健康问题 | data.world |
| 2 | 美国各州收入 | 美国经济分析局 |
| 3 | 青少年摄入营养 | 联合国粮食及农业组织 |

import pandas as pd
pressure = pd.read_csv('./mental_health_poll_updated.csv',encoding='gbk').set_index('问题')
pressure.head(5)
Q_type = set(pressure.index)
Q_type
Q1 = pressure.loc['您多久受到一次压力?']
Q1.head()
list(set(Q1['分类']))
len([Q1['分类'].values[i] for i in range(len(Q1['分类'].values)) if Q1['分类'].values[i] == '从不'])
columns = 'num'
index = list(set(Q1['分类']))
never_num = len([Q1['分类'].values[i] for i in range(len(Q1['分类'].values)) if Q1['分类'].values[i] == '从不'])
never_num
rarely_num = len([Q1['分类'].values[i] for i in range(len(Q1['分类'].values)) if Q1['分类'].values[i] == '很少'])
rarely_num
all_num = len([Q1['分类'].values[i] for i in range(len(Q1['分类'].values)) if Q1['分类'].values[i] == '一直'])
all_num
sometimes = len([Q1['分类'].values[i] for i in range(len(Q1['分类'].values)) if Q1['分类'].values[i] == '有时'])
sometimes
often_num = pd.DataFrame([never_num,rarely_num,all_num,sometimes])
often_num
often_num= often_num.rename(columns={0:'num'})
often_num
pie1 = often_num.num
pie1_list = [num for num in often_num['num']]
labels = [index for index in often_num.index]
pie1_list
import plotly as py
import plotly.graph_objs as pygo
py.offline.init_notebook_mode()
fig = {
"data": [
{
"values": pie1_list,
"labels": labels,
"domain": {"x": [0, .5]},
"name": 'How often are you stressed',
"hoverinfo":"label+percent+name",
"hole": .5, ## 同心圆宽度
"type": "pie"
},],
"layout": {
"title":"How often are you stressed",
"annotations": [
{ "font": { "size": 20},
"showarrow": False,
"text": "",
"x": 0.20,
"y": 1
},
]
}
}
py.offline.iplot(fig)
import plotly as py
import plotly.graph_objs as pygo
py.offline.init_notebook_mode()
pressure = pd.read_csv('./mental_health_poll_updated.csv',encoding='gbk')
Q_type = set(pressure['问题'])
pressure = pressure.set_index('问题')
def question(question):
question = question
for i in range(len(Q_type)):
q = pressure.loc[question]
index = list(set(q['分类']))
num = []
for y in range(len(index)):
type1 = len([q['分类'].values[z] for z in range(len(q['分类'].values)) if q['分类'].values[z] == index[y]])
num.append(type1)
df_num = pd.DataFrame(num)
df_num.index = index
df_num= df_num.rename(columns={0:'num'})
pie = df_num.num
pie_list = [num for num in df_num['num']]
labels = [index for index in df_num.index]
fig = {
"data": [
{
"values": pie_list,
"labels": labels,
"domain": {"x": [0, .5]},
"name": question,
"hoverinfo":"label+percent+name",
"hole": .5, ## 同心圆宽度
"type": "pie"
},],
"layout": {
"title":question,
"annotations": [
{ "font": { "size": 20},
"showarrow": False,
"text": "",
"x": 0.20,
"y": 1
},
]
}
}
return py.offline.iplot(fig)
question("您使用什么资源来帮助您减轻压力")
len(pressure)
pressure1 = pressure[~pressure['洲'].str.contains('(not set)')]
len(pressure1)
pressure2 = pressure1[~pressure1['城市'].str.contains('(not set)')]
poll = pd.read_csv('./pollingData.csv')
poll.head()
poll = poll.rename(columns = {'State':'洲'})
set(poll['洲'])^set(pressure2.洲)
pressure2.loc[pressure2.洲 == 'Mississippi','洲'] = 'Mississipi'
set(poll['洲'])^set(pressure2.洲)
poll = poll.drop(["Yes","No","Total"],axis = 1)
pressure2 = pressure2[~pressure2['洲'].isin(['District of Columbia'])]
pressure2.head()
set(poll['洲'])^set(pressure2.洲)
often = pressure2.loc['您多久受到一次压力?']
often.head()
combin_all = pd.pivot_table(often,index=['洲','分类'],values=['分类'],aggfunc='count').rename(columns = {'城市':'num'})
combin_all.head()
jinwei = pd.read_excel("./jinweidu.xlsx")
jinwei.head()
combin = often.merge(jinwei,left_on='洲',right_on='Region').drop('Region',axis=1)
combin = combin.merge(poll)
combin.head()
combin_all = pd.pivot_table(combin,index=['洲','关键词','lat','lon','PercentYes','PercentNo','分类','代码'],values=['分类'],aggfunc='count').rename(columns = {'城市':'num'})
combin_all
list0 = list(combin_all['num'])
num_count = list((often.groupby(['洲'])['分类'].count()))
len(num_count)
list1 = list(often.groupby(['洲'])['分类'].count())
list2=[]
for i in range(len(list1)):
list2.append(list1[i])
list2.append(list1[i])
list2.append(list1[i])
list2.append(list1[i])
print(list2)
len(list2)
all_the_time.head()
import plotly.express as px
import plotly
import plotly.graph_objects as go
import plotly.offline as py
import plotly.express as px
plotly.offline.init_notebook_mode(connected=True)
token = 'pk.eyJ1Ijoieml4aWFuMDMiLCJhIjoiY2s0OXozNjUwMGF1OTNlbzExczA5YzBibCJ9.hXI3YY-r4hW7dwR_4YI_DA'
px.scatter(all_the_time,x='All the time',y='PercentYes',size='PercentYes',color='All the time',color_continuous_scale=px.colors.colorbrewer.OrRd)
combin_all['percent'] = [a/b for a,b in zip(list0,list2)]
combin_all.head()
px.scatter(all_the_time,x='PercentYes',y='All the time',marginal_x='histogram',marginal_y='histogram')
import pandas as pd
pressure_measure = pd.read_csv("./mental.csv",encoding='gbk')
pressure_level.head()
jinwei = pd.read_excel('./jinweidu.xlsx')
pressure_jinwei = pressure_measure.merge(jinwei,left_on='洲',right_on='Region').drop('Region',axis=1)
压力较小=pressure_jinwei[(pressure_jinwei["压力程度"]>0)&(pressure_jinwei["压力程度"]<=25)]
压力一般=pressure_jinwei[(pressure_jinwei["压力程度"]>25)&(pressure_jinwei["压力程度"]<=50)]
压力较大=pressure_jinwei[(pressure_jinwei["压力程度"]>50)&(pressure_jinwei["压力程度"]<=70)]
压力很大=pressure_jinwei[(pressure_jinwei["压力程度"]>70)&(pressure_jinwei["压力程度"]<=100)]
element3=['压力较小','压力一般','压力较大','压力很大']
from flask import Flask, render_template, request
import pandas as pd
import cufflinks as cf
import plotly as py
import plotly.graph_objs as go
import plotly.express as px
fig3 = go.Figure(data=go.Choropleth(
locations=pressure_jinwei['代码'],##图像绘制需要地区代码
z=pressure_jinwei['压力程度'].astype(float), ##颜色变化因素
locationmode='USA-states', ## 选择地图
colorscale='purpor',
autocolorscale=False, # hover text
marker_line_color='white', # line markers between states
colorbar_title="压力等级", ## 轴名称
hovertext=pressure_jinwei['洲']
))
fig3.update_layout(
title={
'text':'各地区压力等级' ,## 图表标题设置
'y':0.9,
'x':0.5,
'font':{'family':'SimHei', 'size':25},
'xanchor': 'center',
'yanchor': 'top'},
geo = dict(
scope='usa',
projection=go.layout.geo.Projection(type = 'albers usa'),
showlakes=True, # lakes
lakecolor='rgb(255, 255, 255)'),
)
py.offline.iplot(fig3)